Data in database management systems are typically stored in the form of records, or tuples, each composed of a fixed number of fields, also referred to as attributes. The fields of a record contain the data associated with that record. Frequently, database records are presented logically in the form of a table, with records as the rows of the table, and attributes as the columns. Systems typically store records in memory and/or on disk or other media as a linked list, with data for each record stored together. However, the data for adjacent records or even adjacent values of the same field are not necessarily stored in any particular proximity or order.
The manner in which the data is stored presents inherent limitations on the performance of database systems. For example, typically, on-line transaction processing (OLTP) is performed using one database system or computer, and on-line analytical processing (OLAP) is performed on another computer. Data typically is offloaded from a transaction processing system to a data warehouse, and the data in the data warehouse is used for analytical processing. There frequently are significant time delays associated with the transfer of data from one system to another. Analytical processing frequently takes a significant amount of time. Typically, the analytical processing on a data warehouse is performed on an entire table or set of tables, even when only a small portion of the table(s) changed. This also can be very inefficient in time and resources.